CREO Toolkit二次开发-表格文字宽度设置
本文介绍如何使用Toolkit修改Creo工程图中表格文字的宽度。表格文字宽度可以通过设置自动换行(Wrap)以及文字宽度因子两种方式设定,可以根据具体需求选择。
1.设置文字自动换行
文字自动换行相对简单,通过对应的表格对象以及所在行、列,利用ProDwgtableCelltextWrap
函数即可设置自动换行。需要注意的是,Toolkit的函数在表格行列设置比较混乱,函数包含从0和1开始计数两种情况,使用时一定要注意参照帮助文档的函数说明,示例代码如下:
1 | status = ProSelect((char *)"table_cell", 1, NULL, NULL, NULL, NULL, &tableSels, &size); |
P.S. Creo 4.0之后提供了ProDtlnoteWrapTextSet
函数,应该可以设置取消文字自动换行,而Creo 2.0暂时无法取消自动换行。
2.设置文字宽度因子
Creo也可以通过设置文字的宽度因子调整文字的宽度。这里存在个问题,有些字体如cal_grek
的宽度因子设置无效,可能会无法调整宽度,同时文字如果宽度过小也会很难看。
首先获取单元格的宽度,单位为world units:
1 | status = ProDwgtableColumnSizeGet(&table, tableSegment, column, &cellSize); |
之后获取单元格内文本的ProDtlnote
对象,遍历ProDtlnote
对象包含的所有ProDtlnoteline
对象,使用ProDtlnoteLineEnvelopeGet
函数计算每个ProDtlnoteline
的最小外接矩形(Envelope),找出最宽的ProDtlnoteline
对象并计算其与单元格宽度的调整值:
1 | status = ProDtlnoteDataGet(¬e, NULL, PRODISPMODE_NUMERIC, ¬edata); |
最后设定ProDtlnote
对象的格式即可:
1 | status = ProTextStyleWidthSet(textStyle, width * sizeFactor); |
程序实际运行效果如下图所示。
![](/img/proe/TableTextWidth.gif)
设置文字宽度
完整代码可在Github.com下载。代码在VS2010,Creo 2.0 M060 X64下编译通过。